From cea4bbec3f9ba683f94e0f25948f1dd1bbfa8454 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Mon, 7 Aug 2006 15:55:39 +0100 Subject: [PATCH] Provides hooks for perfc print/reset/gather. These arch-neutral hooks allow architectures to report hardware counters. Signed-off-by: Tristan Gingold --- xen/common/perfc.c | 12 ++++++------ xen/include/asm-ia64/perfc.h | 16 ++++++++++++++++ xen/include/asm-powerpc/perfc.h | 16 ++++++++++++++++ xen/include/asm-x86/perfc.h | 23 +++++++++++++++++++++++ 4 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 xen/include/asm-ia64/perfc.h create mode 100644 xen/include/asm-powerpc/perfc.h create mode 100644 xen/include/asm-x86/perfc.h diff --git a/xen/common/perfc.c b/xen/common/perfc.c index e2ba33383e..4eb696a594 100644 --- a/xen/common/perfc.c +++ b/xen/common/perfc.c @@ -8,6 +8,7 @@ #include #include #include +#include #undef PERFCOUNTER #undef PERFCOUNTER_CPU @@ -89,9 +90,7 @@ void perfc_printall(unsigned char key) printk("\n"); } -#ifdef PERF_ARRAYS - ptwr_eip_stat_print(); -#endif + arch_perfc_printall(); } void perfc_reset(unsigned char key) @@ -130,9 +129,7 @@ void perfc_reset(unsigned char key) } } -#ifdef PERF_ARRAYS - ptwr_eip_stat_reset(); -#endif + arch_perfc_reset (); } static dom0_perfc_desc_t perfc_d[NR_PERFCTRS]; @@ -181,6 +178,9 @@ static int perfc_copy_info(XEN_GUEST_HANDLE(dom0_perfc_desc_t) desc, if (perfc_vals == NULL) return -ENOMEM; + /* Architecture may fill counters from hardware. */ + arch_perfc_gather(); + /* We gather the counts together every time. */ for ( i = 0; i < NR_PERFCTRS; i++ ) { diff --git a/xen/include/asm-ia64/perfc.h b/xen/include/asm-ia64/perfc.h new file mode 100644 index 0000000000..37a0ac3bc5 --- /dev/null +++ b/xen/include/asm-ia64/perfc.h @@ -0,0 +1,16 @@ +#ifndef __ASM_PERFC_H__ +#define __ASM_PERFC_H__ + +static inline void arch_perfc_printall (void) +{ +} + +static inline void arch_perfc_reset (void) +{ +} + +static inline void arch_perfc_gather (void) +{ +} + +#endif diff --git a/xen/include/asm-powerpc/perfc.h b/xen/include/asm-powerpc/perfc.h new file mode 100644 index 0000000000..37a0ac3bc5 --- /dev/null +++ b/xen/include/asm-powerpc/perfc.h @@ -0,0 +1,16 @@ +#ifndef __ASM_PERFC_H__ +#define __ASM_PERFC_H__ + +static inline void arch_perfc_printall (void) +{ +} + +static inline void arch_perfc_reset (void) +{ +} + +static inline void arch_perfc_gather (void) +{ +} + +#endif diff --git a/xen/include/asm-x86/perfc.h b/xen/include/asm-x86/perfc.h new file mode 100644 index 0000000000..1999bd0dbf --- /dev/null +++ b/xen/include/asm-x86/perfc.h @@ -0,0 +1,23 @@ +#ifndef __ASM_PERFC_H__ +#define __ASM_PERFC_H__ +#include + +static inline void arch_perfc_printall (void) +{ +#ifdef PERF_ARRAYS + ptwr_eip_stat_print(); +#endif +} + +static inline void arch_perfc_reset (void) +{ +#ifdef PERF_ARRAYS + ptwr_eip_stat_reset(); +#endif +} + +static inline void arch_perfc_gather (void) +{ +} + +#endif -- 2.30.2